package O3_Selection_Sort;

import util.SortTestHelper;

/**
 * Created by Choisaaaa on 2018/6/19.
 *使用了随机生成测试用例的排序
 */
public class SelectionSort {
    private SelectionSort(){}

    public static void  sort(Comparable[] arr){
        int length = arr.length;
        for(int i = 0 ;i < length ;i++){//寻找[i,n)区间的最小值
            int minIndex = i;//记录最小元素的下标
            for (int j = i+1; j < length; j++){
                if(arr[j].compareTo(arr[minIndex]) < 0){//使用compareTo比较两个Comparable对象的大小
                    minIndex = j;
                }
                swap(arr,i,minIndex);
            }
        }

        //SortTestHelper.printArray(arr);
    }

    private static void swap(Object[] arr, int i, int minIndex) {
        Object temp  = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }

    public static void main(String[] args) {
        //测试排序算法的辅助函数
        int N =  20000;
        Integer[] arr = SortTestHelper.generateRandomArray(N,0,10000);
        SortTestHelper.testSort("O3_Selection_Sort.SelectionSort",arr);
    }
}
